var speed = 0;
/**	
 * 动画函数
 * @param {Object} obj 当前的对象
 * @param {Object} attr	当前元素对象的属性
 * @param {Object} end	结束值
 */
function trans(obj,json,fn){
	//对于多物体的运动，要格外注意定时器返回值要绑定在当前对象上。
	clearInterval(obj.timer)
	obj.timer = setInterval(function(){
		var cur = 0;
		var flag = true;//定义标杆，为True表明所有属性到达终点值。
		for(attr in json){
			//透明度变化处理
			switch (attr) {
				case 'opacity':
					cur = Math.round(parseFloat(getStyle(obj,attr)) * 100);
					break;
				case 'scrollTop':
					cur = obj.scrollTop;
					break;
				default:
					cur = parseInt(getStyle(obj,attr))
					break;
			}
			//求速度  20为速度参数。
			speed = (json[attr] - cur) / 20
			speed = json[attr] > cur ? Math.ceil(speed) : Math.floor(speed) 
			//临界值
			if(cur !== json[attr]){
				flag = false;
				
			}
			switch (attr){
				case'opacity':
					obj.style[attr] = `alpha(opacity: ${cur + speed})`;
					obj.style[attr] = (cur + speed) / 100;
					break;
				case'scrollTop':
					obj.scrollTop = cur + speed;
					break;
				default:
					obj.style[attr] = cur + speed + 'px';
					break
			}
		}
		if(flag){
			clearInterval(obj.timer);
			if(fn){
				fn();
			}
			return;
		}
	},30)
}
function getStyle(obj,attr){
	if(obj.currentStyle){
		//IE
		return obj.currentStyle[attr];
	}else{
		return getComputedStyle (obj,null)[attr]
		} 
}